package ooo.reindeer.cedf.components.queue;

import ooo.reindeer.cedf.Event;
import ooo.reindeer.cedf.components.IComponent;
import ooo.reindeer.cedf.components.IControllable;
import ooo.reindeer.cedf.components.handler.IEventHandler;

/**
 * 队列接口
 */
public interface IEventQueue  extends IComponent, IControllable {

    /**
     * 相对立中放入一个事件
     * @param event 事件实体
     * @return 是否成功
     */
    boolean offer(Event event);

    /**
     * 取出一个事件
     * @return 事件对象如果队列中没有数据则取出空
     */
    Event poll();


    /**
     * 注册事件的处理具柄实现
     * @param event_handler 处理具柄实现
     * @return 是否成功
     */
    boolean regEventHandler(IEventHandler event_handler);

    /**
     * 清除队列的处理具柄
     * @return 是否成功
     */
    boolean unRegEventHandler();

    /**
     * 获得队列长度
     * @return 对立的长度
     */
    long size();



}
